# 导包
from appium import webdriver
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import os, time

# 定义基类
class Base():

    # 在类实例化的时候，会自动调用这个方法
    def __init__(self):
        # 提升权限
        os.system('adb root')
        # 启动项参数
        cap = {
            "platformName": "Android",
            "deviceName": "emulator-5554",
            "noReset": True,
            "appPackage": "com.achievo.vipshop",
            "appActivity": "com.achievo.vipshop.homepage.activity.MainActivity"
        }
        # 生成一个驱动对象
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', cap)
        # 设置一个隐式等待
        self.driver.implicitly_wait(25)
        # 设置一个强制等待
        sleep(15)

    # 定位元素的方法
    def find_ele(self, loc):
        # 判断参数loc的数据类型
        if type(loc) == str:
            return self.driver.find_element_by_android_uiautomator(loc)
        else:
            return self.driver.find_element(*loc)

    # 显示等待定位元素的方法  loc = (By.ID, '')  (By.XPATH, '')
    def find_wait_ele(self, loc):
        return WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(loc))

    # 获取元素属性值的方法
    def get_key_value(self, loc, key):
        # 先定位出一个页面元素
        ele = self.find_ele(loc)
        # 返回得到的属性值
        return ele.get_attribute(key)

    # 截屏的方法
    def jieping(self, filename):
        # 获取时间戳
        t = time.strftime('%Y%m%d%H%M%S', time.localtime())
        # 截屏代码
        self.driver.save_screenshot(t+filename)

    # 轻敲的代码
    def qingqiao(self, x,y):
        self.driver.tap([(x,y)], 500)

    # 滑动的代码
    def huadong(self,x,y,x2,y2):
        self.driver.swipe(x,y,x2,y2,500)

    # 退出应用
    def tuichu(self):
        self.driver.quit()

